package com.fowo.api.ptt.enitty;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fowo.api.common.annotaion.JoinField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;

/**
 * 打印模版表实体
 * @author yl_ls
 */
@Getter
@Setter
@JsonInclude(JsonInclude.Include.NON_NULL)
@TableName(value = "sys_print_template", autoResultMap = true)
public class PrintTemplate implements Serializable {
    /**
     * 主键编号
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 模版分组编号（对应打印模版列表的顶部选项卡）
     */
    @JoinField(PrintTemplateGroup.class)
    private Long groupId;

    /**
     * 模版分类编号（对应打印模版列表的左侧类型树）
     */
    @JoinField(PrintTemplateType.class)
    private Long typeId;

    /**
     * 模版类型
     * json - JSON 数据格式模版
     * excel - Excel 文件模版（预留未实现）
     */
    private String type;

    /**
     * 模版属性
     * 0 - 系统内置模版（用户不可编辑、不可删除）
     * 1 - 自定义模版
     */
    private String attrs;

    /**
     * 模版名称
     */
    private String name;

    /**
     * 纸张宽度(mm)
     */
    private Integer width;

    /**
     * 纸张高度(mm)
     */
    private Integer height;

    /**
     * 页眉高度(mm)
     */
    private Integer headerHeight;

    /**
     * 页脚高度(mm)
     */
    private Integer footerHeight;


    /**
     * 更新人
     */
    @TableField(value = "`last_update_user`")
    @Schema(title = "更新人")
    private Long lastUpdateUser;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Schema(title = "更新时间")
    private java.util.Date lastUpdateTime;

    /**
     * 创建人
     */
    @Schema(title = "创建人")
    private Long createUser;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Schema(title = "创建时间")
    private java.util.Date createTime;

    /**
     * 删除标记
     */
    @TableLogic
    @Schema(title = "删除标记")
    private Boolean delFlag;

    /**
     * 模板内容数据
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private JSONObject data;
}
